package Soligee.view;
//gr
import Soligee.controller.bo.OrcamentoBO;
import Soligee.controller.facade.sessionFacadeImplements.SessionFacadeAlterarImplements;
import com.icesoft.faces.component.ext.HtmlCommandButton;
import com.icesoft.faces.component.ext.HtmlCommandLink;
import com.icesoft.faces.component.ext.HtmlDataTable;
import com.icesoft.faces.component.ext.HtmlInputText;
import com.icesoft.faces.component.ext.HtmlInputTextarea;
import com.icesoft.faces.component.ext.HtmlOutputText;
import com.icesoft.faces.component.ext.HtmlSelectOneMenu;
import com.icesoft.faces.component.jsfcl.data.DefaultSelectedData;
import com.icesoft.faces.component.jsfcl.data.DefaultSelectionItems;
import com.icesoft.faces.component.jsfcl.data.DefaultTableDataModel;
import com.icesoft.faces.component.jsfcl.data.PopupBean;
import com.icesoft.faces.component.jsfcl.data.SelectInputDateBean;
import com.icesoft.faces.component.panellayout.PanelLayout;
import com.icesoft.faces.component.panelpopup.PanelPopup;
import com.icesoft.faces.component.paneltabset.PanelTab;
import com.icesoft.faces.component.paneltabset.PanelTabSet;
import com.icesoft.faces.component.paneltabset.TabChangeEvent;
import com.icesoft.faces.component.selectinputdate.SelectInputDate;
import com.icesoft.faces.component.selectinputtext.SelectInputText;
import com.sun.rave.faces.data.DefaultSelectItemsArray;
import com.sun.rave.web.ui.appbase.AbstractPageBean;
import Soligee.decorador.DecoradorNF;
import Soligee.controller.facade.sessionFacadeImplements.SessionFacadeBuscarImplements;
import Soligee.controller.facade.sessionFacadeImplements.SessionFacadeRemoverImplements;
import Soligee.decorador.DecoradorInicializaCombos;
import Soligee.decorador.PaginacaoListaCincoEmCinco;
import Soligee.model.vo.lancamentos.ItensOrcamentoVO;
import java.util.List;
import javax.faces.FacesException;
import javax.faces.event.ValueChangeEvent;
import javax.faces.model.SelectItem;
import Soligee.model.vo.lancamentos.OrcamentoVO;
import java.util.ArrayList;
import java.util.Date;
import javax.faces.context.FacesContext;

public class BuscarOrcamento extends AbstractPageBean {

    // <editor-fold defaultstate="collapsed" desc="Managed Component Definition">
    private int __placeholder;
    //utilizado pelo autocompelte
    private DefaultSelectionItems item; 
    //lista para preencher a tabela
    private List<OrcamentoVO> lista_de_orcamentos; 
    //utilizado para montar os itens do orcamento e calculos de negocio
    private static OrcamentoBO orcamentoBO = new OrcamentoBO();
    //lista para preencher tabela de itens dentro da aba
    private List<DecoradorNF> lista_decoradora;
    //utilizado pelo link
    private static OrcamentoVO orcamento;
    //variavel de controle
    private boolean controle;    
    //cria uma lista de itens após para após a alteracao ser utilizada
    private static List<ItensOrcamentoVO> listaItensOrcamento = new ArrayList();

    //gets e sets
    public static List<ItensOrcamentoVO> getListaItensOrcamento() {
        return listaItensOrcamento;
    }

    public static void setListaItensOrcamento(List<ItensOrcamentoVO> listaItensOrcamento) {
        BuscarOrcamento.listaItensOrcamento = listaItensOrcamento;
    }  
    

    public static OrcamentoBO getOrcamentoBO() {
        return orcamentoBO;
    }

    public static void setOrcamentoBO(OrcamentoBO orcamentoBO) {
        BuscarOrcamento.orcamentoBO = orcamentoBO;
    }

    private static PaginacaoListaCincoEmCinco paginacaoLista;

    public static PaginacaoListaCincoEmCinco getPaginacaoLista() {
        return paginacaoLista;
    }

    public static void setPaginacaoLista(PaginacaoListaCincoEmCinco paginacaoLista) {
        BuscarOrcamento.paginacaoLista = paginacaoLista;
    }

    public DefaultSelectionItems getItem() {
          return item;
    }

    public void setItem(DefaultSelectionItems item) {
          this.item = item;
     }

    /**
     * <p>Automatically managed component initialization.  <strong>WARNING:</strong>
     * This method is automatically generated, so any user-specified code inserted
     * here is subject to being replaced.</p>
     */
    private void _init() throws Exception {
    }

    //Plano Pagamento
    private DefaultSelectedData botaoSelecionadoPlanoPagamento = new DefaultSelectedData();

    public DefaultSelectedData getBotaoSelecionadoPlanoPagamento() {
        return botaoSelecionadoPlanoPagamento;
    }

    public void setBotaoSelecionadoPlanoPagamento(DefaultSelectedData dsd) {
        this.botaoSelecionadoPlanoPagamento = dsd;
    }
    private DefaultSelectionItems botaoPlanoPagamento = new DefaultSelectionItems();

    public DefaultSelectionItems getBotaoPlanoPagamento() {
        return botaoPlanoPagamento;
    }

    public void setBotaoPlanoPagamento(DefaultSelectionItems dsi) {
        this.botaoPlanoPagamento = dsi;
    }
    private SelectInputDateBean selectInputDate1Bean = new SelectInputDateBean();

    public SelectInputDateBean getSelectInputDate1Bean() {
        return selectInputDate1Bean;
    }

    public void setSelectInputDate1Bean(SelectInputDateBean sidb) {
        this.selectInputDate1Bean = sidb;
    }
    private SelectInputDateBean selectInputDateBean2 = new SelectInputDateBean();

    public SelectInputDateBean getSelectInputDateBean2() {
        return selectInputDateBean2;
    }

    public void setSelectInputDateBean2(SelectInputDateBean sidb) {
        this.selectInputDateBean2 = sidb;
    }
    private DefaultTableDataModel dataTable1Model = new DefaultTableDataModel();

    public DefaultTableDataModel getDataTable1Model() {
        return dataTable1Model;
    }

    public void setDataTable1Model(DefaultTableDataModel dtdm) {
        this.dataTable1Model = dtdm;
    }
    private HtmlCommandLink linkCancelar = new HtmlCommandLink();

    public HtmlCommandLink getLinkCancelar() {
        return linkCancelar;
    }

    public void setLinkCancelar(HtmlCommandLink hcl) {
        this.linkCancelar = hcl;
    }
    private HtmlInputText campoQuantidadeProdutos = new HtmlInputText();

    public HtmlInputText getCampoQuantidadeProdutos() {
        return campoQuantidadeProdutos;
    }

    public void setCampoQuantidadeProdutos(HtmlInputText hit) {
        this.campoQuantidadeProdutos = hit;
    }
    private HtmlSelectOneMenu opcaoPlanoPagamento = new HtmlSelectOneMenu();

    public HtmlSelectOneMenu getOpcaoPlanoPagamento() {
        return opcaoPlanoPagamento;
    }

    public void setOpcaoPlanoPagamento(HtmlSelectOneMenu hsom) {
        this.opcaoPlanoPagamento = hsom;
    }
    private HtmlCommandLink linkCancelar2 = new HtmlCommandLink();

    public HtmlCommandLink getLinkCancelar2() {
        return linkCancelar2;
    }

    public void setLinkCancelar2(HtmlCommandLink hcl) {
        this.linkCancelar2 = hcl;
    }
    private SelectInputDate dataOrcamento = new SelectInputDate();

    public SelectInputDate getDataOrcamento() {
        return dataOrcamento;
    }

    public void setDataOrcamento(SelectInputDate sid) {
        this.dataOrcamento = sid;
    }
    private SelectInputDate validadeProposta = new SelectInputDate();

    public SelectInputDate getValidadeProposta() {
        return validadeProposta;
    }

    public void setValidadeProposta(SelectInputDate sid) {
        this.validadeProposta = sid;
    }
    private HtmlInputTextarea campoObservacoes = new HtmlInputTextarea();

    public HtmlInputTextarea getCampoObservacoes() {
        return campoObservacoes;
    }

    public void setCampoObservacoes(HtmlInputTextarea hit) {
        this.campoObservacoes = hit;
    }
    private HtmlCommandLink commandLink2 = new HtmlCommandLink();

    public HtmlCommandLink getCommandLink2() {
        return commandLink2;
    }

    public void setCommandLink2(HtmlCommandLink hcl) {
        this.commandLink2 = hcl;
    }
    private HtmlDataTable tabelaItensOrcamento = new HtmlDataTable();

    public HtmlDataTable getTabelaItensOrcamento() {
        return tabelaItensOrcamento;
    }

    public void setTabelaItensOrcamento(HtmlDataTable hdt) {
        this.tabelaItensOrcamento = hdt;
    }
    private HtmlInputText campoValorPrazo = new HtmlInputText();

    public HtmlInputText getCampoValorPrazo() {
        return campoValorPrazo;
    }

    public void setCampoValorPrazo(HtmlInputText hit) {
        this.campoValorPrazo = hit;
    }
    private HtmlInputText campoValorVista = new HtmlInputText();

    public HtmlInputText getCampoValorVista() {
        return campoValorVista;
    }

    public void setCampoValorVista(HtmlInputText hit) {
        this.campoValorVista = hit;
    }
    private DefaultTableDataModel dataTable1Model1 = new DefaultTableDataModel();

    public DefaultTableDataModel getDataTable1Model1() {
        return dataTable1Model1;
    }

    public void setDataTable1Model1(DefaultTableDataModel dtdm) {
        this.dataTable1Model1 = dtdm;
    }
    private DefaultSelectedData selectOneMenu1Bean = new DefaultSelectedData();

    public DefaultSelectedData getSelectOneMenu1Bean() {
        return selectOneMenu1Bean;
    }

    public void setSelectOneMenu1Bean(DefaultSelectedData dsd) {
        this.selectOneMenu1Bean = dsd;
    }
    private HtmlSelectOneMenu tipoBusca = new HtmlSelectOneMenu();

    public HtmlSelectOneMenu getTipoBusca() {
        return tipoBusca;
    }

    public void setTipoBusca(HtmlSelectOneMenu hsom) {
        this.tipoBusca = hsom;
    }
    private HtmlDataTable tabelaResultadoBusca = new HtmlDataTable();

    public HtmlDataTable getTabelaResultadoBusca() {
        return tabelaResultadoBusca;
    }

    public void setTabelaResultadoBusca(HtmlDataTable hdt) {
        this.tabelaResultadoBusca = hdt;
    }
    private HtmlInputText campoCodOrcamento = new HtmlInputText();

    public HtmlInputText getCampoCodOrcamento() {
        return campoCodOrcamento;
    }

    public void setCampoCodOrcamento(HtmlInputText hit) {
        this.campoCodOrcamento = hit;
    }
    private HtmlInputText campoCodOrcamentoAba02 = new HtmlInputText();

    public HtmlInputText getCampoCodOrcamentoAba02() {
        return campoCodOrcamentoAba02;
    }

    public void setCampoCodOrcamentoAba02(HtmlInputText hit) {
        this.campoCodOrcamentoAba02 = hit;
    }
    private SelectInputText campoABuscar = new SelectInputText();

    public SelectInputText getCampoABuscar() {
        return campoABuscar;
    }

    public void setCampoABuscar(SelectInputText sit) {
        this.campoABuscar = sit;
    }
    private PanelTabSet painelBuscarOrcamento = new PanelTabSet();

    public PanelTabSet getPainelBuscarOrcamento() {
        return painelBuscarOrcamento;
    }

    public void setPainelBuscarOrcamento(PanelTabSet pts) {
        this.painelBuscarOrcamento = pts;
    }
    private DefaultTableDataModel dataTable1Model2 = new DefaultTableDataModel();

    public DefaultTableDataModel getDataTable1Model2() {
        return dataTable1Model2;
    }

    public void setDataTable1Model2(DefaultTableDataModel dtdm) {
        this.dataTable1Model2 = dtdm;
    }
    private HtmlCommandButton tabelaResultadoBuscaFooterNextButton = new HtmlCommandButton();

    public HtmlCommandButton getTabelaResultadoBuscaFooterNextButton() {
        return tabelaResultadoBuscaFooterNextButton;
    }

    public void setTabelaResultadoBuscaFooterNextButton(HtmlCommandButton hcb) {
        this.tabelaResultadoBuscaFooterNextButton = hcb;
    }
    private HtmlCommandButton tabelaResultadoBuscaFooterLastButton = new HtmlCommandButton();

    public HtmlCommandButton getTabelaResultadoBuscaFooterLastButton() {
        return tabelaResultadoBuscaFooterLastButton;
    }

    public void setTabelaResultadoBuscaFooterLastButton(HtmlCommandButton hcb) {
        this.tabelaResultadoBuscaFooterLastButton = hcb;
    }
    private HtmlCommandButton tabelaResultadoBuscaFooterFirstButton = new HtmlCommandButton();

    public HtmlCommandButton getTabelaResultadoBuscaFooterFirstButton() {
        return tabelaResultadoBuscaFooterFirstButton;
    }

    public void setTabelaResultadoBuscaFooterFirstButton(HtmlCommandButton hcb) {
        this.tabelaResultadoBuscaFooterFirstButton = hcb;
    }
    private HtmlCommandButton tabelaResultadoBuscaFooterPreviousButton = new HtmlCommandButton();

    public HtmlCommandButton getTabelaResultadoBuscaFooterPreviousButton() {
        return tabelaResultadoBuscaFooterPreviousButton;
    }

    public void setTabelaResultadoBuscaFooterPreviousButton(HtmlCommandButton hcb) {
        this.tabelaResultadoBuscaFooterPreviousButton = hcb;
    }
    private HtmlCommandButton btnConfirmaAlteracao = new HtmlCommandButton();

    public HtmlCommandButton getBtnConfirmaAlteracao() {
        return btnConfirmaAlteracao;
    }

    public void setBtnConfirmaAlteracao(HtmlCommandButton hcb) {
        this.btnConfirmaAlteracao = hcb;
    }
    private HtmlCommandButton btnAlterar = new HtmlCommandButton();

    public HtmlCommandButton getBtnAlterar() {
        return btnAlterar;
    }

    public void setBtnAlterar(HtmlCommandButton hcb) {
        this.btnAlterar = hcb;
    }
    private HtmlCommandButton btnExcluir = new HtmlCommandButton();

    public HtmlCommandButton getBtnExcluir() {
        return btnExcluir;
    }

    public void setBtnExcluir(HtmlCommandButton hcb) {
        this.btnExcluir = hcb;
    }
    private PopupBean panelPopup1Bean = new PopupBean();

    public PopupBean getPanelPopup1Bean() {
        return panelPopup1Bean;
    }

    public void setPanelPopup1Bean(PopupBean pb) {
        this.panelPopup1Bean = pb;
    }
    private HtmlCommandButton btnPopUp1 = new HtmlCommandButton();

    public HtmlCommandButton getBtnPopUp1() {
        return btnPopUp1;
    }

    public void setBtnPopUp1(HtmlCommandButton hcb) {
        this.btnPopUp1 = hcb;
    }
    private HtmlCommandButton btnPopUp2 = new HtmlCommandButton();

    public HtmlCommandButton getBtnPopUp2() {
        return btnPopUp2;
    }

    public void setBtnPopUp2(HtmlCommandButton hcb) {
        this.btnPopUp2 = hcb;
    }
    private HtmlOutputText textoPopUp = new HtmlOutputText();

    public HtmlOutputText getTextoPopUp() {
        return textoPopUp;
    }

    public void setTextoPopUp(HtmlOutputText hot) {
        this.textoPopUp = hot;
    }
    private PanelPopup panelPopup1 = new PanelPopup();

    public PanelPopup getPanelPopup1() {
        return panelPopup1;
    }

    public void setPanelPopup1(PanelPopup pp) {
        this.panelPopup1 = pp;
    }
    private DefaultSelectedData defaultSelectedData1 = new DefaultSelectedData();

    public DefaultSelectedData getDefaultSelectedData1() {
        return defaultSelectedData1;
    }

    public void setDefaultSelectedData1(DefaultSelectedData dsd) {
        this.defaultSelectedData1 = dsd;
    }
    private DefaultSelectionItems selectOneMenu1DefaultItems1 = new DefaultSelectionItems();

    public DefaultSelectionItems getSelectOneMenu1DefaultItems1() {
        return selectOneMenu1DefaultItems1;
    }

    public void setSelectOneMenu1DefaultItems1(DefaultSelectionItems dsi) {
        this.selectOneMenu1DefaultItems1 = dsi;
    }
    private DefaultSelectItemsArray tipoBuscaDefaultItems = new DefaultSelectItemsArray();

    public DefaultSelectItemsArray getTipoBuscaDefaultItems() {
        return tipoBuscaDefaultItems;
    }

    public void setTipoBuscaDefaultItems(DefaultSelectItemsArray dsia) {
        this.tipoBuscaDefaultItems = dsia;
    }
    private DefaultSelectedData defaultSelectedData2 = new DefaultSelectedData();

    public DefaultSelectedData getDefaultSelectedData2() {
        return defaultSelectedData2;
    }

    public void setDefaultSelectedData2(DefaultSelectedData dsd) {
        this.defaultSelectedData2 = dsd;
    }
    private DefaultSelectionItems selectOneMenu1DefaultItems = new DefaultSelectionItems();

    public DefaultSelectionItems getSelectOneMenu1DefaultItems() {
        return selectOneMenu1DefaultItems;
    }

    public void setSelectOneMenu1DefaultItems(DefaultSelectionItems dsi) {
        this.selectOneMenu1DefaultItems = dsi;
    }
    private HtmlSelectOneMenu campoVendedor = new HtmlSelectOneMenu();

    public HtmlSelectOneMenu getCampoVendedor() {
        return campoVendedor;
    }

    public void setCampoVendedor(HtmlSelectOneMenu hsom) {
        this.campoVendedor = hsom;
    }
    private HtmlSelectOneMenu campoCliente = new HtmlSelectOneMenu();

    public HtmlSelectOneMenu getCampoCliente() {
        return campoCliente;
    }

    public void setCampoCliente(HtmlSelectOneMenu hsom) {
        this.campoCliente = hsom;
    }
    private PanelLayout painelCorpoDireita = new PanelLayout();

    public PanelLayout getPainelCorpoDireita() {
        return painelCorpoDireita;
    }

    public void setPainelCorpoDireita(PanelLayout pl) {
        this.painelCorpoDireita = pl;
    }
    private PanelTab aba04 = new PanelTab();

    public PanelTab getAba04() {
        return aba04;
    }

    public void setAba04(PanelTab pt) {
        this.aba04 = pt;
    }
    private HtmlInputText campoCodProduto = new HtmlInputText();

    public HtmlInputText getCampoCodProduto() {
        return campoCodProduto;
    }

    public void setCampoCodProduto(HtmlInputText hit) {
        this.campoCodProduto = hit;
    }
    private HtmlInputText campoDescricao = new HtmlInputText();

    public HtmlInputText getCampoDescricao() {
        return campoDescricao;
    }

    public void setCampoDescricao(HtmlInputText hit) {
        this.campoDescricao = hit;
    }
    private HtmlInputText campoValorUnitario = new HtmlInputText();

    public HtmlInputText getCampoValorUnitario() {
        return campoValorUnitario;
    }

    public void setCampoValorUnitario(HtmlInputText hit) {
        this.campoValorUnitario = hit;
    }
    private HtmlInputText campoQuantidade = new HtmlInputText();

    public HtmlInputText getCampoQuantidade() {
        return campoQuantidade;
    }

    public void setCampoQuantidade(HtmlInputText hit) {
        this.campoQuantidade = hit;
    }
    private HtmlInputText campoTotal = new HtmlInputText();

    public HtmlInputText getCampoTotal() {
        return campoTotal;
    }

    public void setCampoTotal(HtmlInputText hit) {
        this.campoTotal = hit;
    }
    private javax.faces.component.html.HtmlCommandButton btnAlteraItemTabela = new javax.faces.component.html.HtmlCommandButton();

    public javax.faces.component.html.HtmlCommandButton getBtnAlteraItemTabela() {
        return btnAlteraItemTabela;
    }

    public void setBtnAlteraItemTabela(javax.faces.component.html.HtmlCommandButton hcb) {
        this.btnAlteraItemTabela = hcb;
    }

    //Fim Plano Pagamento

    // </editor-fold>

    public BuscarOrcamento() {
    }

    @Override
    public void init() {
        // Perform initializations inherited from our superclass
        super.init();
        FacesContext.getCurrentInstance().getExternalContext().getRequestMap().clear();

        campoValorPrazo.setMaxlength(10);
        campoValorVista.setMaxlength(10);
        
        btnConfirmaAlteracao.setRendered(false);
        btnExcluir.setRendered(false);
        btnAlterar.setRendered(false);

        botaoPlanoPagamento.clear();
        botaoPlanoPagamento.add(new SelectItem(1,"A Vista"));
        botaoPlanoPagamento.add(new SelectItem(2,"2 Vezes"));
        botaoPlanoPagamento.add(new SelectItem(3,"3 Vezes"));
        botaoPlanoPagamento.add(new SelectItem(4,"5 Vezes"));

        tipoBuscaDefaultItems.clear();
        tipoBuscaDefaultItems.add(new SelectItem(1,"Cliente"));
        tipoBuscaDefaultItems.add(new SelectItem(2,"Vendedor"));
        tipoBuscaDefaultItems.add(new SelectItem(3,"Todos"));
        //modificar para Cliente
        setSelectOneMenu1DefaultItems1(new DecoradorInicializaCombos().inicializarCampoPessoaFisica());
        setSelectOneMenu1DefaultItems(new DecoradorInicializaCombos().inicializaCampoVendedor());
        campoCodOrcamento.setReadonly(true);
        // seta e limpa os campos
        this.setaCampos(true);
        this.limpaCampos();
        this.panelPopup1.setRendered(false);        

        this.controlaPaginacao(0);
        //limpa tabela
        dataTable1Model.setWrappedData(null);
        aba04.setDisabled(true);
            
        // <editor-fold defaultstate="collapsed" desc="Managed Component Initialization">
        // Initialize automatically managed components
        // *Note* - this logic should NOT be modified
        try {
            _init();
        } catch (Exception e) {
            log("BuscarOrcamentoXX Initialization Failure", e);
            throw e instanceof FacesException ? (FacesException) e: new FacesException(e);
        }
        
        // </editor-fold>

    }

    @Override
    public void preprocess() {
    }

    @Override
    public void prerender() {
    }

    @Override
    public void destroy() {
    }

    protected ApplicationBean1 getApplicationBean1() {
        return (ApplicationBean1) getBean("ApplicationBean1");
    }

    protected RequestBean1 getview$RequestBean1() {
        return (RequestBean1) getBean("view$RequestBean1");
    }

 
    protected SessionBean1 getview$SessionBean1() {
        return (SessionBean1) getBean("view$SessionBean1");
    }

    //metodo para habilitar e desabilitar os campos do formulario
    public void setaCampos(boolean x){
        
        campoCodOrcamento.setDisabled(x);
        campoCliente.setDisabled(x);
        campoVendedor.setDisabled(x);
        campoQuantidadeProdutos.setDisabled(x);
        opcaoPlanoPagamento.setDisabled(x);
        campoCodOrcamentoAba02.setDisabled(x);
        dataOrcamento.setDisabled(x);
        validadeProposta.setDisabled(x);
        campoObservacoes.setDisabled(x);
        campoValorVista.setDisabled(x);
        campoValorPrazo.setDisabled(x);
        btnAlteraItemTabela.setDisabled(x);
        
    }
    //metodo para limpeza de todos os campos do formulario
    public void limpaCampos(){
        campoCodOrcamento.resetValue();
        campoCodOrcamento.resetValue();
        campoCliente.resetValue();
        campoVendedor.resetValue();
        campoQuantidadeProdutos.resetValue();
        opcaoPlanoPagamento.resetValue();
        campoCodOrcamentoAba02.resetValue();
        dataOrcamento.resetValue();
        validadeProposta.resetValue();
        campoObservacoes.resetValue();
        campoValorVista.resetValue();
        campoValorPrazo.resetValue();
        dataTable1Model2.setWrappedData(null);
    }

    //alterar algumas funcionalidade de acordo a opcao do tipo da busca
    public void tipoBusca_processValueChange(ValueChangeEvent vce) {
        dataTable1Model.setWrappedData(null);
        campoABuscar.resetValue();
        if(Integer.parseInt(tipoBusca.getValue().toString())== 3){
            campoABuscar.setReadonly(true);
        }else
           campoABuscar.setReadonly(false);
    }

  
    public List<OrcamentoVO> getLista_de_orcamentos() {
        return lista_de_orcamentos;
    }

    public void setLista_de_orcamentos(List<OrcamentoVO> lista_de_orcamentos) {
        this.lista_de_orcamentos = lista_de_orcamentos;
    }

    //auto complete do campo a buscar
    public void campoABuscar_processValueChange(ValueChangeEvent vce) {
      //controla o autocomplete de acordo com o combobox
     switch(Integer.parseInt(tipoBusca.getValue().toString())){
       case 1://busca por nomeCliente
           item = new SessionFacadeBuscarImplements().consultaSelectInputText(8,"nomeCliente",campoABuscar.getValue().toString(),OrcamentoVO.class);
           break;
         case 2://busca por nomeVendedor
           item = new SessionFacadeBuscarImplements().consultaSelectInputText(8,"nome",campoABuscar.getValue().toString(),OrcamentoVO.class);
           break;         
         default:
             System.out.println("Erro na consulta do auto complete");
           break;
        }//fim switch
    }


    public String commandLink1_action() {
       painelBuscarOrcamento.setSelectedIndex(1);
        return null;
    }

    protected ApplicationBean1 getview$ApplicationBean1() {
        return (ApplicationBean1) getBean("view$ApplicationBean1");
    }

    protected CadastrarPessoaFisica getview$CadastrarPessoaFisica() {
        return (CadastrarPessoaFisica) getBean("view$CadastrarPessoaFisica");
    }

    protected BuscarPessoaFisica getview$BuscarPessoaFisica() {
        return (BuscarPessoaFisica) getBean("view$BuscarPessoaFisica");
    }

    protected CadastrarPedido getview$CadastrarPedido() {
        return (CadastrarPedido) getBean("view$CadastrarPedido");
    }

    protected Login getview$Login() {
        return (Login) getBean("view$Login");
    }

    protected BuscarRepresentante getview$BuscarRepresentante() {
        return (BuscarRepresentante) getBean("view$BuscarRepresentante");
    }

    protected BuscarVendedor getview$BuscarVendedor() {
        return (BuscarVendedor) getBean("view$BuscarVendedor");
    }

    protected CadastrarPessoaJuridica getview$CadastrarPessoaJuridica() {
        return (CadastrarPessoaJuridica) getBean("view$CadastrarPessoaJuridica");
    }

    protected BuscarNotaFiscal getview$BuscarNotaFiscal() {
        return (BuscarNotaFiscal) getBean("view$BuscarNotaFiscal");
    }

    protected CadastrarVendedor getview$CadastrarVendedor() {
        return (CadastrarVendedor) getBean("view$CadastrarVendedor");
    }

    public String linkCancelar_action() {
        //return null means stay on the same page
        return "sair";
    }

    public String linkCancelar2_action() {
        // TODO: Substitua o código
        return "sair";
    }

    public String linkCancelar3_action() {
        //return null means stay on the same page
        return "sair";
    }

    public String link_proximaAba02_action() {
         painelBuscarOrcamento.setSelectedIndex(2);
        return null;
    }

    public String btnConfirmaAlteracao_action() {
        controlaPopup(true,"Deseja alterar o Orcamento selecionado?",true,true,"Sim","Não");
        controle = true;
        return null;
    }

    public String btnAlterar_action() {
        this.setaCampos(false);
        btnExcluir.setRendered(false);
        btnAlterar.setRendered(false);
        btnConfirmaAlteracao.setRendered(true);
        
        return null;
    }
    public void controlaPopup(boolean renderedPopup,String textoPoup,boolean btn1Rendered, boolean btn2Rendered,
            String textobtn1, String textobtn2){
        panelPopup1.setRendered(renderedPopup);
        textoPopUp.setValue(textoPoup);
        btnPopUp1.setValue(textobtn1);
        btnPopUp1.setRendered(btn1Rendered);
        btnPopUp2.setRendered(btn2Rendered);
        btnPopUp2.setValue(textobtn2);
    }


    public String btnExcluir_action() {
        controlaPopup(true,"Excluir o Orçamento?",true,true,"Sim","Não");
        controle = false;
        return null;
    }

    public String btnBuscar_action() {
     SessionFacadeBuscarImplements facade_busca= new SessionFacadeBuscarImplements();
        switch(Integer.parseInt(tipoBusca.getValue().toString())){
            case 1://busca por nomeCliente
               this.setLista_de_orcamentos(facade_busca.buscaComAssociacao("nome",campoABuscar.getValue().toString(),"pessoa",OrcamentoVO.class));
               dataTable1Model.setWrappedData(this.getLista_de_orcamentos());
               break;
             case 2://busca por nomeVendedor
              this.setLista_de_orcamentos(facade_busca.buscaComAssociacao("nome",campoABuscar.getValue().toString(),"vendedor",OrcamentoVO.class));
               dataTable1Model.setWrappedData(this.getLista_de_orcamentos());
               break;
             case 3://busca todos
                this.setLista_de_orcamentos(facade_busca.buscarTodos("codOrcamento",OrcamentoVO.class));
                dataTable1Model.setWrappedData(this.getLista_de_orcamentos());
                break;
             default:
                 System.out.println("Valor inválido do combobox para o tipo da consulta.");
               break;
            }//fim switch
       this.setPaginacaoLista(new PaginacaoListaCincoEmCinco(this.getLista_de_orcamentos()));
       this.controlaPaginacao(this.getLista_de_orcamentos().size());
       return null;

    }

    public List<DecoradorNF> getLista_decoradora() {
        return lista_decoradora;
    }
    public void setLista_decoradora(List<DecoradorNF> listaDecoradora) {
        lista_decoradora = listaDecoradora;
    }



      public String tabelaResultadoBusca_firstPageAction() {
          dataTable1Model.setWrappedData(this.getPaginacaoLista().firstPage());
          tabelaResultadoBuscaFooterFirstButton.setDisabled(true);
            tabelaResultadoBuscaFooterPreviousButton.setDisabled(true);
            if(this.getPaginacaoLista().getTotalPaginas()>1){
                tabelaResultadoBuscaFooterNextButton.setDisabled(false);
                tabelaResultadoBuscaFooterLastButton.setDisabled(false);
            }
       return null;
    }

    public String tabelaResultadoBusca_previousPageAction() {
            dataTable1Model.setWrappedData(this.getPaginacaoLista().previousPage());
             if(this.getPaginacaoLista().getNumeroDaPagina()==1){
                  tabelaResultadoBuscaFooterNextButton.setDisabled(true);
                  tabelaResultadoBuscaFooterFirstButton.setDisabled(true);
            }
            if(this.getPaginacaoLista().getTotalPaginas()>1){
                 tabelaResultadoBuscaFooterNextButton.setDisabled(false);
            }
            if(this.getPaginacaoLista().getNumeroDaPagina() >= 2){
                tabelaResultadoBuscaFooterFirstButton.setDisabled(false);
            }
           return null;
           }

    public String tabelaResultadoBusca_nextPageAction() {
          dataTable1Model.setWrappedData(this.getPaginacaoLista().nextPage());
           tabelaResultadoBuscaFooterPreviousButton.setDisabled(false);
            if(this.getPaginacaoLista().getTotalPaginas()==this.getPaginacaoLista().getNumeroDaPagina()){
                  tabelaResultadoBuscaFooterNextButton.setDisabled(true);
                   tabelaResultadoBuscaFooterLastButton.setDisabled(true);
            }
            if(this.getPaginacaoLista().getNumeroDaPagina() >= 2){
                 tabelaResultadoBuscaFooterFirstButton.setDisabled(false);
            }
        return null;
    }

    public String tabelaResultadoBusca_lastPageAction() {
          dataTable1Model.setWrappedData(this.getPaginacaoLista().lastPage());
        if(this.getPaginacaoLista().getTotalPaginas()==this.getPaginacaoLista().getNumeroDaPagina()){
                  tabelaResultadoBuscaFooterLastButton.setDisabled(false);
                  tabelaResultadoBuscaFooterNextButton.setDisabled(true);
                  tabelaResultadoBuscaFooterPreviousButton.setDisabled(false);
                  tabelaResultadoBuscaFooterFirstButton.setDisabled(false);
         }
         if(this.getPaginacaoLista().getNumeroDaPagina() >= 2){
                tabelaResultadoBuscaFooterFirstButton.setDisabled(false);
         }
         return null;
    }


    public String linkAction1_action() {        
        this.orcamento = (OrcamentoVO)tabelaResultadoBusca.getRowData(); //pega o objeto da linha selecionada
        campoCodOrcamento.setValue(orcamento.getCodOrcamento());
        campoCliente.setValue(orcamento.getPessoa().getCodPessoa());
        campoVendedor.setValue(orcamento.getVendedor().getCodVendedor());
        campoQuantidadeProdutos.setValue(orcamento.getQtdadeProduto());
        opcaoPlanoPagamento.setValue(orcamento.getPlanoPagto());
        campoCodOrcamentoAba02.setValue(orcamento.getCodOrcamento());
        dataOrcamento.setValue(orcamento.getDataOrcamento());
        validadeProposta.setValue(orcamento.getValidadeProposta());
        campoObservacoes.setValue(orcamento.getObs());
        campoValorVista.setValue(orcamento.getValorTotalVista());
        campoValorPrazo.setValue(orcamento.getValorTotalPrazo());
        btnAlterar.setRendered(true);
        btnExcluir.setRendered(true);
        btnConfirmaAlteracao.setRendered(false);
        setLista_decoradora(getOrcamentoBO().montaItens(orcamento.getCodOrcamento()));
        //monta tabela de itens
        dataTable1Model2.setWrappedData(getLista_decoradora());
        return null;
    }

    public String btnPopUp2_action() {
        panelPopup1.setRendered(false);
        return null;
    }

    private void finalizaTabelaItens(){
        setListaItensOrcamento(getOrcamentoBO().finalizaOrcamento(getLista_decoradora()));
    }//fim finaliza tabela itens
    
    
    public String btnPopUp1_action() {
        if (controle == false) {
            SessionFacadeRemoverImplements remover = new SessionFacadeRemoverImplements();
            try {
                if (remover.removerOrcamento(orcamento)) {
                    btnExcluir.setRendered(false);
                    btnAlterar.setRendered(false);
                    controlaPopup(true,"Orçamento excluido com sucesso!",false,true,"","OK");
                    this.btnBuscar_action();
                }
            } catch (Exception e) {
                controlaPopup(true,"Erro:" + e.getMessage() + "caused by: " + e.getStackTrace(),false,true,"","OK");
                System.err.println("Erro:" + e.getMessage() + "caused by: " + e.getStackTrace());
            }
            return null;
        } else {
            Date dataOrcamento2 = (Date) (Object) dataOrcamento.getValue();
            Date validadeProposta2 = (Date) (Object) validadeProposta.getValue();
            int codVend = Integer.parseInt(campoVendedor.getValue().toString());
            int codPess = Integer.parseInt(campoCliente.getValue().toString());

            SessionFacadeAlterarImplements facadeAlterar = new SessionFacadeAlterarImplements();
            try {
                this.finalizaTabelaItens();
                if (facadeAlterar.alterarOrcamento(codVend,
                        Integer.parseInt(campoCodOrcamento.getValue().toString()),
                        codPess,
                        dataOrcamento2,
                        validadeProposta2,
                        Integer.parseInt(campoQuantidadeProdutos.getValue().toString()),
                        Integer.parseInt(opcaoPlanoPagamento.getValue().toString()),
                        Double.parseDouble(campoValorVista.getValue().toString()),
                        Double.parseDouble(campoValorPrazo.getValue().toString()),
                        campoObservacoes.getValue().toString(),
                        this.getListaItensOrcamento(),this.getOrcamentoBO().getListaProdutos())) {
                    
                    controlaPopup(true,"Orçamento alterado com sucesso!",false,true,"","OK");
                    btnExcluir.setRendered(false);
                    btnAlterar.setRendered(false);
                    btnConfirmaAlteracao.setRendered(false);
                    limpaCampos();
                    painelBuscarOrcamento.setSelectedIndex(0);
                    this.btnBuscar_action();
                }
            } catch (Exception e) {
                controlaPopup(true,"Erro:" + e.getMessage() + "caused by: " + e.getStackTrace(),false,true,"","OK");
                System.err.println("Erro:" + e.getMessage() + "caused by: " + e.getStackTrace());
            }
            return null;
        }
    }

          //metodo para controlar os botoes da paginacao
    public void controlaPaginacao(int controlePaginas){
        if(controlePaginas == 0){
            tabelaResultadoBuscaFooterFirstButton.setDisabled(true);
            tabelaResultadoBuscaFooterPreviousButton.setDisabled(true);
            tabelaResultadoBuscaFooterNextButton.setDisabled(true);
            tabelaResultadoBuscaFooterLastButton.setDisabled(true);
        }
        if(controlePaginas>5){
         tabelaResultadoBuscaFooterNextButton.setDisabled(false);
         tabelaResultadoBuscaFooterLastButton.setDisabled(false);
         }
    }


    public String tabelaItensOrcamento_firstPageAction() {
        {
            return null;
        }
    }

    public String tabelaItensOrcamento_previousPageAction() {
        {
            return null;
        }
    }

    public String tabelaItensOrcamento_nextPageAction() {
        {
            return null;
        }
    }

    public String tabelaItensOrcamento_lastPageAction() {
        {
            return null;
        }
    }

    public String btnAlteraItemTabela_action() {
        DecoradorNF decorador = (DecoradorNF)tabelaItensOrcamento.getRowData();
        campoCodProduto.setValue(decorador.getCodProduto());
        campoDescricao.setValue(decorador.getDescricaoProduto());
        campoValorUnitario.setValue(decorador.getValorUnitario());
        campoQuantidade.setValue(decorador.getQuantidade());
        campoTotal.setValue(decorador.getTotal());
        aba04.setDisabled(false);
        painelBuscarOrcamento.setSelectedIndex(3);
        campoQuantidade.setReadonly(false);
        return null;
    }

    public String btnOKAlteraItem_action() {
        DecoradorNF decorador;
        //armazena o codigo do produto a ser alterado
        int codAux = Integer.parseInt(campoCodProduto.getValue().toString());
        /*percorre a lista decoradora para encontrar o posicao do produto na lista decoradora
        a partir de seu codigo*/
        int indiceRemover = 0;
        for (int i = 0; i <  getLista_decoradora().size(); i++) {
            decorador = (DecoradorNF)getLista_decoradora().get(i);
           //verificaa se a lista na posicao i contem o o produto desejado
           if(decorador.getCodProduto()==codAux){
               indiceRemover = i;
           }//fim if
        }//fim for
       //remover da lista o produto com o indice determinado pela condicao na linha 1050
       getLista_decoradora().remove(indiceRemover);
       //adiciona o produto na lista decoradora com os valores modificados
       getLista_decoradora().add(indiceRemover,
              new DecoradorNF(Integer.parseInt(campoCodProduto.getValue().toString()),campoDescricao.getValue().toString(),
               Double.parseDouble(campoQuantidade.getValue().toString()),Double.parseDouble(campoValorUnitario.getValue().toString())));
      //preenche a tabela de itens da nf com a lista decoradora
      dataTable1Model2.setWrappedData(getLista_decoradora());
      //renderiza a tabela
      tabelaItensOrcamento.setRendered(true);
      //seta o campo quantidade para readonly
      campoQuantidade.setReadonly(true);
      //desabilita aba de alteracao
      aba04.setDisabled(true);
      campoValorVista.setValue(orcamentoBO.calculaTotalProduto(getLista_decoradora()));
      //retorna para a aba com a tabela de itens
      painelBuscarOrcamento.setSelectedIndex(2);

     return null;
    }


}
